package ${package.Service};

import ${entityDTO.clazzPackage}.${entityDTO.clazzName};
import com.insigma.framework.db.PageInfo;
<#if serviceBPO.superClazzPackage??>
import ${serviceBPO.superClazzPackage};
</#if>

import java.io.Serializable;
import java.util.Collection;

/**
 * <p>
 * ${table.comment!} 服务类
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
<#if kotlin>
interface ${serviceBPO.clazzName}
<#elseif serviceBPO.superClazzName??>
public interface ${serviceBPO.clazzName} extends ${serviceBPO.superClazzName} {
<#else>
public interface ${serviceBPO.clazzName} {
</#if>
<#if !kotlin>
    /**
     * ${table.comment!} - 分页查询
     * @param ${entityDTO.clazzName?uncap_first} ${table.comment!} DTO对象
     * @param page 页码
     * @param size 每页显示条数
     * @return ${table.comment!} 分页查询的结果
     */
    public PageInfo<${entityDTO.clazzName}> queryPageList(${entityDTO.clazzName} ${entityDTO.clazzName?uncap_first}, Integer page, Integer size);

    /**
     * ${table.comment!} - 用于提供给导出excel中的数据集
     * @param ${entityDTO.clazzName?uncap_first} ${table.comment!} DTO对象
     * @param page 页码
     * @param size 每页显示条数
     * @return ${table.comment!} 查询的结果集
     */
    public PageInfo<${entityDTO.clazzName}> queryListForExport(${entityDTO.clazzName} ${entityDTO.clazzName?uncap_first}, Integer page, Integer size);

    /**
     * ${table.comment!} - 数据保存
     * @param ${entityDTO.clazzName?uncap_first} ${table.comment!} DTO对象
     * @return ${table.comment!} 保存的结果, true - 成功; false - 失败
     */
    public boolean save(${entityDTO.clazzName} ${entityDTO.clazzName?uncap_first});

    /**
     * ${table.comment!} - 批量保存数据
     * @param datas ${table.comment!} 保存数据集合
     * @return 保存结果, true - 成功; false - 失败
     */
    public boolean saveBatch(Collection<${entityDTO.clazzName}> datas);

    /**
     * ${table.comment!} - 编辑更新
     * @param ${entityDTO.clazzName?uncap_first} ${table.comment!} DTO对象
     * @return 更新结果, true - 成功; false - 失败
     */
    public boolean updateById(${entityDTO.clazzName} ${entityDTO.clazzName?uncap_first});

    /**
     * ${table.comment!} - 通过id删除
     * @param id ${table.comment!} 数据主键ID值
     * @return 删除结果, true - 成功; false - 失败
     */
    public boolean removeById(Serializable id);

    /**
     * ${table.comment!} - 批量删除
     * @param ids ${table.comment!} 数据主键ID集合
     * @return 删除结果, true - 成功; false - 失败
     */
    public boolean removeByIds(Collection<? extends Serializable> ids);

    /**
     * ${table.comment!} - 通过id查询
     * @param id ${table.comment!} 数据主键ID值
     * @return ${table.comment!} DTO对象
     */
    public ${entityDTO.clazzName} queryById(Serializable id);

    /**
     * ${table.comment!} - 单条查询
     * @param ${entityDTO.clazzName?uncap_first} ${table.comment!} DTO对象
     * @return ${table.comment!} DTO对象
     */
    public ${entityDTO.clazzName} queryOne(${entityDTO.clazzName} ${entityDTO.clazzName?uncap_first});
}
</#if>
